package br.com.sol.persistencia;

import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.widget.Toast;
import br.com.sol.model.Atualizacao;
import br.com.sol.model.Contato;

public class AtualizacaoDAO extends DAO<Atualizacao>{
	
	private ContatoDAO contatoDAO;

	public AtualizacaoDAO(Context context) {
		super(context);
		contatoDAO = new ContatoDAO(context);
	}

	@Override
	public long insert(Atualizacao obj) {
		ContentValues values = new ContentValues();
		values.put("id_contato", obj.getConteudo());
		values.put("conteudo", obj.getConteudo());
		values.put("data_postagem", obj.getContato().getIdContato());
		open();
		long idAtualizacao = database.insert(Atualizacao.TABLE_NAME, null, values);
		close();
		return idAtualizacao;
	}

	@Override
	public boolean update(Atualizacao obj) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean delete(Atualizacao obj) {
		try{
			int rows = database.delete(Atualizacao.TABLE_NAME, "id_contato="+obj.getIdAtualizacao(), null);
			return (rows > 0);
		}catch(Exception exception){
			Toast.makeText(null, exception.getMessage(), Toast.LENGTH_SHORT).show();
			return false;
		}
	}

	@Override
	public List<Atualizacao> select(Atualizacao obj) {
		List<Atualizacao> list = new LinkedList<Atualizacao>();
		open();
        Cursor cursor = database.query(Atualizacao.TABLE_NAME, null, null, null, null, null, null);
        if (cursor.moveToFirst()) {
        	do {
            	
        		Contato contato = new Contato();
        		contato.setIdContato(Integer.parseInt(cursor.getString(1)));
        		contato = contatoDAO.select(contato).get(0);
        		
            	Atualizacao atualizacao = new Atualizacao();
            	atualizacao.setIdAtualizacao(Integer.parseInt(cursor.getString(0)));
            	atualizacao.setContato(contato);
            	atualizacao.setConteudo(cursor.getString(2));
            	atualizacao.setDataPostagem(new Date(cursor.getLong(3)));
            	
            	list.add(atualizacao);
            	
        	} while (cursor.moveToNext());
        }
        if (cursor != null && !cursor.isClosed()) {
        	cursor.close();
        }
        close();
        return list;
	}

	@Override
	public Integer getLastId() {
		// TODO Auto-generated method stub
		return null;
	}

}
